package com.wgy.day38方法引用.数组的构造器引用;

import org.w3c.dom.ls.LSOutput;

import java.util.Arrays;

/**
 * Created by pc on 2020/12/14 23:09
 * Description: LearningJava
 */
//数组的构造器引用

public class Demo01 {
   /* 定义一个方法,方法的参数传递创建数组的长度和ArrayBuilder接口
    方法内部根据传递的长度使用ArrayBuilder中的方法创建数组并返回*/
   public static int[] createArray(int length,ArrayBuilder ab){
       return ab.buildArray(length);
   }

    public static void main(String[] args) {
       //调用createArray方法,传递数组的长度和Lambda表达式
        int[] array1 = createArray(5, (int len) -> {
            //根据数据的长度创建数组并返回
            return new int[len];
        });

        System.out.println(array1.length);//5


       /* 调用createArray方法,传递数组的长度和数组的构造器引用
       * 已知创建的就是int[]数组
       * 数组的长度也是已知的
       * 就可以使用方法引用
       * int[]引用 new,根据参数传递的长度来创建数组
       * */
        int[] array2 = createArray(10,int[]::new );
        System.out.println(Arrays.toString(array2));//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        System.out.println(array2.length);//10





    }


}
